Load libraries

library(knitr)
library(rmdformats)
library(ggplot2)
library(ggpubr)
library(GGally)
library(car)
library(tidyverse)
library(lme4)
library(lmerTest)
library("MuMIn")
library(lmtest)
library(boot)

Read datasets

AllSubs_NeuralActivation <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_clean.csv')

AllSubs_NeuralActivation_Comedy <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Comedy_clean.csv')

AllSubs_NeuralActivation_Horror <- read.csv('/Users/luisalvarez/Documents/GitHub/RM_Thesis_Neuroforecasting/ProcessedData/AllSubs_NeuralActivation_Aggregate_Combined_Horror_clean.csv')

Create data frames for each model.

# Define aggregate variables. 
All_Gross_M1_log <- log(AllSubs_NeuralActivation$Gross_US_M1)
All_Theaters_M1 <- AllSubs_NeuralActivation$Theaters_US_M1

Comedy_Gross_M1_log <- log(AllSubs_NeuralActivation_Comedy$Gross_US_M1)
Comedy_Theaters_M1 <- AllSubs_NeuralActivation_Comedy$Theaters_US_M1

Horror_Gross_M1_log <- log(AllSubs_NeuralActivation_Horror$Gross_US_M1)
Horror_Theaters_M1 <- AllSubs_NeuralActivation_Horror$Theaters_US_M1
  
M1_df <- data.frame(All_Gross_M1_log, All_Theaters_M1) 
M1_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_Theaters_M1) 
M1_H_df <- data.frame(Horror_Gross_M1_log, Horror_Theaters_M1) 

# Define affect variables.
All_PA <- AllSubs_NeuralActivation$Pos_arousal_scaled
All_NA <- AllSubs_NeuralActivation$Neg_arousal_scaled

Comedy_PA <- AllSubs_NeuralActivation_Comedy$Pos_arousal_scaled
Comedy_NA <- AllSubs_NeuralActivation_Comedy$Neg_arousal_scaled

Horror_PA <- AllSubs_NeuralActivation_Horror$Pos_arousal_scaled
Horror_NA <- AllSubs_NeuralActivation_Horror$Neg_arousal_scaled

M2_df <- data.frame(All_Gross_M1_log, All_PA, All_NA) 
M2_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA) 
M2_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA) 
# Define ISC variables. 
All_NAcc_ISC <- AllSubs_NeuralActivation$NAcc_ISC
All_AIns_ISC <- AllSubs_NeuralActivation$AIns_ISC
All_MPFC_ISC <- AllSubs_NeuralActivation$MPFC_ISC

Comedy_NAcc_ISC <- AllSubs_NeuralActivation_Comedy$NAcc_ISC
Comedy_AIns_ISC <- AllSubs_NeuralActivation_Comedy$AIns_ISC
Comedy_MPFC_ISC <- AllSubs_NeuralActivation_Comedy$MPFC_ISC

Horror_NAcc_ISC <- AllSubs_NeuralActivation_Horror$NAcc_ISC
Horror_AIns_ISC <- AllSubs_NeuralActivation_Horror$AIns_ISC
Horror_MPFC_ISC <- AllSubs_NeuralActivation_Horror$MPFC_ISC

# Define models. 
M4_df <- data.frame(All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC) 
M4_C_df <- data.frame(Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC) 
M4_H_df <- data.frame(Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC) 

M5_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_ISC, All_AIns_ISC, All_MPFC_ISC) 
M5_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_ISC, Comedy_AIns_ISC, Comedy_MPFC_ISC) 
M5_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_ISC, Horror_AIns_ISC, Horror_MPFC_ISC) 
# Define whole variables. 
All_NAcc_whole <- AllSubs_NeuralActivation$NAcc_whole
All_AIns_whole <- AllSubs_NeuralActivation$AIns_whole
All_MPFC_whole <- AllSubs_NeuralActivation$MPFC_whole

Comedy_NAcc_whole <- AllSubs_NeuralActivation_Comedy$NAcc_whole
Comedy_AIns_whole <- AllSubs_NeuralActivation_Comedy$AIns_whole
Comedy_MPFC_whole <- AllSubs_NeuralActivation_Comedy$MPFC_whole

Horror_NAcc_whole <- AllSubs_NeuralActivation_Horror$NAcc_whole
Horror_AIns_whole <- AllSubs_NeuralActivation_Horror$AIns_whole
Horror_MPFC_whole <- AllSubs_NeuralActivation_Horror$MPFC_whole

# Define models. 
M6_df <- data.frame(All_NAcc_whole, All_AIns_whole, All_MPFC_whole) 
M6_C_df <- data.frame(Comedy_NAcc_whole, Comedy_AIns_whole, Comedy_MPFC_whole) 
M6_H_df <- data.frame(Horror_NAcc_whole, Horror_AIns_whole, Horror_MPFC_whole) 

M7_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_whole, All_AIns_whole, All_MPFC_whole) 
M7_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_whole,
                      Comedy_AIns_whole, Comedy_MPFC_whole) 
M7_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_whole,
                      Horror_AIns_whole, Horror_MPFC_whole) 
# Define onset variables. 
All_NAcc_onset <- AllSubs_NeuralActivation$NAcc_onset
All_AIns_onset <- AllSubs_NeuralActivation$AIns_onset
All_MPFC_onset <- AllSubs_NeuralActivation$MPFC_onset

Comedy_NAcc_onset <- AllSubs_NeuralActivation_Comedy$NAcc_onset
Comedy_AIns_onset <- AllSubs_NeuralActivation_Comedy$AIns_onset
Comedy_MPFC_onset <- AllSubs_NeuralActivation_Comedy$MPFC_onset

Horror_NAcc_onset <- AllSubs_NeuralActivation_Horror$NAcc_onset
Horror_AIns_onset <- AllSubs_NeuralActivation_Horror$AIns_onset
Horror_MPFC_onset <- AllSubs_NeuralActivation_Horror$MPFC_onset

# Define models. 
M8_df <- data.frame(All_NAcc_onset, All_AIns_onset, All_MPFC_onset) 
M8_C_df <- data.frame(Comedy_NAcc_onset, Comedy_AIns_onset, Comedy_MPFC_onset) 
M8_H_df <- data.frame(Horror_NAcc_onset, Horror_AIns_onset, Horror_MPFC_onset) 

M9_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_onset, All_MPFC_onset) 
M9_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
                      Comedy_AIns_onset, Comedy_MPFC_onset) 
M9_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
                      Horror_AIns_onset, Horror_MPFC_onset) 
# Define middle variables. 
All_NAcc_middle <- AllSubs_NeuralActivation$NAcc_middle
All_AIns_middle <- AllSubs_NeuralActivation$AIns_middle
All_MPFC_middle <- AllSubs_NeuralActivation$MPFC_middle

Comedy_NAcc_middle <- AllSubs_NeuralActivation_Comedy$NAcc_middle
Comedy_AIns_middle <- AllSubs_NeuralActivation_Comedy$AIns_middle
Comedy_MPFC_middle <- AllSubs_NeuralActivation_Comedy$MPFC_middle

Horror_NAcc_middle <- AllSubs_NeuralActivation_Horror$NAcc_middle
Horror_AIns_middle <- AllSubs_NeuralActivation_Horror$AIns_middle
Horror_MPFC_middle <- AllSubs_NeuralActivation_Horror$MPFC_middle

# Define models. 
M10_df <- data.frame(All_NAcc_middle, All_AIns_middle, All_MPFC_middle) 
M10_C_df <- data.frame(Comedy_NAcc_middle, Comedy_AIns_middle, Comedy_MPFC_middle) 
M10_H_df <- data.frame(Horror_NAcc_middle, Horror_AIns_middle, Horror_MPFC_middle) 

M11_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_middle, All_AIns_middle, All_MPFC_middle) 
M11_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_middle,
                      Comedy_AIns_middle, Comedy_MPFC_middle) 
M11_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_middle,
                      Horror_AIns_middle, Horror_MPFC_middle) 
# Define middle variables. 
All_NAcc_offset <- AllSubs_NeuralActivation$NAcc_offset
All_AIns_offset <- AllSubs_NeuralActivation$AIns_offset
All_MPFC_offset <- AllSubs_NeuralActivation$MPFC_offset

Comedy_NAcc_offset <- AllSubs_NeuralActivation_Comedy$NAcc_offset
Comedy_AIns_offset <- AllSubs_NeuralActivation_Comedy$AIns_offset
Comedy_MPFC_offset <- AllSubs_NeuralActivation_Comedy$MPFC_offset

Horror_NAcc_offset <- AllSubs_NeuralActivation_Horror$NAcc_offset
Horror_AIns_offset <- AllSubs_NeuralActivation_Horror$AIns_offset
Horror_MPFC_offset <- AllSubs_NeuralActivation_Horror$MPFC_offset

# Define models. 
M12_df <- data.frame(All_NAcc_offset, All_AIns_offset, All_MPFC_offset) 
M12_C_df <- data.frame(Comedy_NAcc_offset, Comedy_AIns_offset, Comedy_MPFC_offset) 
M12_H_df <- data.frame(Horror_NAcc_offset, Horror_AIns_offset, Horror_MPFC_offset) 

M13_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_offset, All_AIns_offset, All_MPFC_offset) 
M13_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_offset,
                      Comedy_AIns_offset, Comedy_MPFC_offset) 
M13_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_offset,
                      Horror_AIns_offset, Horror_MPFC_offset) 

M14_df <- data.frame(All_Gross_M1_log, All_PA, All_NA, All_NAcc_onset, All_AIns_middle, All_MPFC_offset) 
M14_C_df <- data.frame(Comedy_Gross_M1_log, Comedy_PA, Comedy_NA, Comedy_NAcc_onset,
                      Comedy_AIns_middle, Comedy_MPFC_offset) 
M14_H_df <- data.frame(Horror_Gross_M1_log, Horror_PA, Horror_NA, Horror_NAcc_onset,
                      Horror_AIns_middle, Horror_MPFC_offset) 

Notes:

Neuroforecasting: First Month US.

M1: Aggregste data


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(Theaters_US_M1) + 
    Type:scale(Theaters_US_M1), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.77903 -0.23205 -0.05965  0.21883  0.83396 

Coefficients:
                                 Estimate Std. Error t value Pr(>|t|)    
(Intercept)                      17.21275    0.12503 137.673  < 2e-16 ***
Typecomedy                       -0.03297    0.16727  -0.197    0.845    
scale(Theaters_US_M1)             0.96069    0.17747   5.413 1.13e-05 ***
Typecomedy:scale(Theaters_US_M1) -0.24037    0.20114  -1.195    0.243    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4365 on 26 degrees of freedom
Multiple R-squared:  0.7846,    Adjusted R-squared:  0.7597 
F-statistic: 31.56 on 3 and 26 DF,  p-value: 8.065e-09

           R2m       R2c
[1,] 0.7655209 0.7655209
[1] 41.10136

M2: Affective data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Pos_arousal_scaled) + 
    scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-1.2843 -0.6926  0.1338  0.4828  1.3591 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           17.6704     0.6299  28.051   <2e-16 ***
Typecomedy                            -1.6873     1.0543  -1.600    0.123    
scale(Pos_arousal_scaled)             -0.3907     0.4778  -0.818    0.422    
scale(Neg_arousal_scaled)             -0.5110     0.4545  -1.124    0.272    
Typecomedy:scale(Pos_arousal_scaled)   0.7876     0.5368   1.467    0.155    
Typecomedy:scale(Neg_arousal_scaled)  -0.4148     1.0734  -0.386    0.703    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.845 on 24 degrees of freedom
Multiple R-squared:  0.2545,    Adjusted R-squared:  0.09923 
F-statistic: 1.639 on 5 and 24 DF,  p-value: 0.188

           R2m       R2c
[1,] 0.2203203 0.2203203
[1] 82.33984

M3: Aggregate and affective data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Pos_arousal_scaled) + 
    scale(Neg_arousal_scaled) + Type:scale(Pos_arousal_scaled) + 
    Type:scale(Neg_arousal_scaled), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-1.2843 -0.6926  0.1338  0.4828  1.3591 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           17.6704     0.6299  28.051   <2e-16 ***
Typecomedy                            -1.6873     1.0543  -1.600    0.123    
scale(Pos_arousal_scaled)             -0.3907     0.4778  -0.818    0.422    
scale(Neg_arousal_scaled)             -0.5110     0.4545  -1.124    0.272    
Typecomedy:scale(Pos_arousal_scaled)   0.7876     0.5368   1.467    0.155    
Typecomedy:scale(Neg_arousal_scaled)  -0.4148     1.0734  -0.386    0.703    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.845 on 24 degrees of freedom
Multiple R-squared:  0.2545,    Adjusted R-squared:  0.09923 
F-statistic: 1.639 on 5 and 24 DF,  p-value: 0.188

           R2m       R2c
[1,] 0.2203203 0.2203203
[1] 82.33984

M4: ISC data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_ISC) + scale(AIns_ISC) + 
    scale(MPFC_ISC) + Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + 
    Type:scale(MPFC_ISC), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
    Min      1Q  Median      3Q     Max 
-1.1415 -0.5179 -0.0290  0.3284  1.7190 

Coefficients:
                           Estimate Std. Error t value Pr(>|t|)    
(Intercept)                17.35882    0.24765  70.093   <2e-16 ***
Typecomedy                 -0.32720    0.33377  -0.980   0.3376    
scale(NAcc_ISC)             0.82609    0.36598   2.257   0.0343 *  
scale(AIns_ISC)            -0.23898    0.24217  -0.987   0.3345    
scale(MPFC_ISC)             0.04594    0.36435   0.126   0.9008    
Typecomedy:scale(NAcc_ISC) -0.87443    0.42880  -2.039   0.0536 .  
Typecomedy:scale(AIns_ISC)  0.40309    0.41697   0.967   0.3442    
Typecomedy:scale(MPFC_ISC)  0.12766    0.42544   0.300   0.7669    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8607 on 22 degrees of freedom
Multiple R-squared:  0.2911,    Adjusted R-squared:  0.06551 
F-statistic:  1.29 on 7 and 22 DF,  p-value: 0.3005

           R2m       R2c
[1,] 0.2375059 0.2375059
[1] 84.832

M5: ISC data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_ISC) + 
    scale(AIns_ISC) + scale(MPFC_ISC) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_ISC) + Type:scale(AIns_ISC) + Type:scale(MPFC_ISC), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.61447 -0.19931 -0.01218  0.17574  0.65657 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                           16.8771     0.3831  44.053  < 2e-16 ***
Typecomedy                            -0.1961     0.6399  -0.307  0.76316    
scale(Theaters_US_M1)                  0.9387     0.2874   3.266  0.00485 ** 
scale(Pos_arousal_scaled)             -0.5317     0.2352  -2.261  0.03806 *  
scale(Neg_arousal_scaled)             -0.1696     0.2726  -0.622  0.54257    
scale(NAcc_ISC)                        0.1718     0.2617   0.657  0.52082    
scale(AIns_ISC)                       -0.1537     0.1184  -1.298  0.21253    
scale(MPFC_ISC)                        0.4706     0.1961   2.400  0.02893 *  
Typecomedy:scale(Theaters_US_M1)      -0.2456     0.3124  -0.786  0.44335    
Typecomedy:scale(Pos_arousal_scaled)   0.6018     0.3027   1.988  0.06415 .  
Typecomedy:scale(Neg_arousal_scaled)  -0.3782     0.6226  -0.607  0.55208    
Typecomedy:scale(NAcc_ISC)            -0.1277     0.3106  -0.411  0.68651    
Typecomedy:scale(AIns_ISC)             0.0596     0.2458   0.242  0.81153    
Typecomedy:scale(MPFC_ISC)            -0.4412     0.2321  -1.901  0.07543 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4051 on 16 degrees of freedom
Multiple R-squared:  0.8858,    Adjusted R-squared:  0.7929 
F-statistic: 9.543 on 13 and 16 DF,  p-value: 3.208e-05

           R2m       R2c
[1,] 0.8105311 0.8105311
[1] 42.068

M6: Neural whole data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_whole) + scale(AIns_whole) + 
    scale(MPFC_whole) + Type:scale(NAcc_whole) + Type:scale(AIns_whole) + 
    Type:scale(MPFC_whole), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.32304 -0.50651 -0.08924  0.60106  1.97862 

Coefficients:
                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  17.35384    0.33174  52.312   <2e-16 ***
Typecomedy                    0.06926    0.47558   0.146    0.886    
scale(NAcc_whole)            -0.39315    0.29889  -1.315    0.202    
scale(AIns_whole)             0.27509    0.35468   0.776    0.446    
scale(MPFC_whole)             0.05432    0.31449   0.173    0.864    
Typecomedy:scale(NAcc_whole)  0.33746    0.40993   0.823    0.419    
Typecomedy:scale(AIns_whole)  0.37420    0.55585   0.673    0.508    
Typecomedy:scale(MPFC_whole) -0.01654    0.38884  -0.043    0.966    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8986 on 22 degrees of freedom
Multiple R-squared:  0.2274,    Adjusted R-squared:  -0.01845 
F-statistic: 0.9249 on 7 and 22 DF,  p-value: 0.5067

          R2m      R2c
[1,] 0.182512 0.182512
[1] 87.41332

M7: Neural whole data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_whole) + 
    scale(AIns_whole) + scale(MPFC_whole) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_whole) + Type:scale(AIns_whole) + Type:scale(MPFC_whole), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.77925 -0.23188 -0.03919  0.21060  0.71933 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.75767    0.41552  40.330  < 2e-16 ***
Typecomedy                           -0.20478    0.70623  -0.290 0.775566    
scale(Theaters_US_M1)                 0.91243    0.21522   4.240 0.000625 ***
scale(Pos_arousal_scaled)            -0.46120    0.39426  -1.170 0.259217    
scale(Neg_arousal_scaled)             0.05169    0.31610   0.164 0.872150    
scale(NAcc_whole)                    -0.18524    0.16086  -1.152 0.266439    
scale(AIns_whole)                     0.17901    0.19312   0.927 0.367723    
scale(MPFC_whole)                     0.11211    0.23464   0.478 0.639258    
Typecomedy:scale(Theaters_US_M1)     -0.30435    0.24944  -1.220 0.240103    
Typecomedy:scale(Pos_arousal_scaled)  0.59979    0.42522   1.411 0.177531    
Typecomedy:scale(Neg_arousal_scaled) -0.87950    0.75108  -1.171 0.258753    
Typecomedy:scale(NAcc_whole)          0.10170    0.25257   0.403 0.692530    
Typecomedy:scale(AIns_whole)          0.14450    0.33688   0.429 0.673697    
Typecomedy:scale(MPFC_whole)         -0.08881    0.26652  -0.333 0.743285    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4551 on 16 degrees of freedom
Multiple R-squared:  0.8559,    Adjusted R-squared:  0.7387 
F-statistic: 7.308 on 13 and 16 DF,  p-value: 0.000175

           R2m       R2c
[1,] 0.7661365 0.7661365
[1] 49.04303

M8: Neural onset data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_onset) + scale(AIns_onset) + 
    scale(MPFC_onset) + Type:scale(NAcc_onset) + Type:scale(AIns_onset) + 
    Type:scale(MPFC_onset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.56852 -0.68099  0.03323  0.60789  1.56732 

Coefficients:
                             Estimate Std. Error t value Pr(>|t|)    
(Intercept)                  17.51995    0.27900  62.795   <2e-16 ***
Typecomedy                   -0.53256    0.37467  -1.421    0.169    
scale(NAcc_onset)            -0.27027    0.29988  -0.901    0.377    
scale(AIns_onset)            -0.05588    0.35386  -0.158    0.876    
scale(MPFC_onset)             0.10611    0.30796   0.345    0.734    
Typecomedy:scale(NAcc_onset)  0.62362    0.39292   1.587    0.127    
Typecomedy:scale(AIns_onset) -0.08131    0.49394  -0.165    0.871    
Typecomedy:scale(MPFC_onset)  0.21547    0.44127   0.488    0.630    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8807 on 22 degrees of freedom
Multiple R-squared:  0.2578,    Adjusted R-squared:  0.02162 
F-statistic: 1.092 on 7 and 22 DF,  p-value: 0.4021

           R2m       R2c
[1,] 0.2085365 0.2085365
[1] 86.20888

M9: Neural onset data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) + 
    scale(AIns_onset) + scale(MPFC_onset) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_onset) + Type:scale(AIns_onset) + Type:scale(MPFC_onset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.48991 -0.18987 -0.01771  0.20364  0.57552 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          17.43628    0.42827  40.713  < 2e-16 ***
Typecomedy                           -0.52314    0.64739  -0.808   0.4309    
scale(Theaters_US_M1)                 0.97894    0.17928   5.460 5.24e-05 ***
scale(Pos_arousal_scaled)            -0.41513    0.27486  -1.510   0.1505    
scale(Neg_arousal_scaled)            -0.31982    0.29709  -1.077   0.2977    
scale(NAcc_onset)                    -0.29130    0.13192  -2.208   0.0422 *  
scale(AIns_onset)                    -0.45891    0.20477  -2.241   0.0396 *  
scale(MPFC_onset)                     0.19915    0.16578   1.201   0.2471    
Typecomedy:scale(Theaters_US_M1)     -0.28279    0.20766  -1.362   0.1921    
Typecomedy:scale(Pos_arousal_scaled)  0.51509    0.30803   1.672   0.1139    
Typecomedy:scale(Neg_arousal_scaled)  0.03968    0.59659   0.067   0.9478    
Typecomedy:scale(NAcc_onset)          0.34909    0.19837   1.760   0.0975 .  
Typecomedy:scale(AIns_onset)          0.53383    0.26202   2.037   0.0585 .  
Typecomedy:scale(MPFC_onset)         -0.31756    0.22934  -1.385   0.1852    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3864 on 16 degrees of freedom
Multiple R-squared:  0.8961,    Adjusted R-squared:  0.8117 
F-statistic: 10.62 on 13 and 16 DF,  p-value: 1.587e-05

           R2m       R2c
[1,] 0.8263552 0.8263552
[1] 39.21994

M10: Neural middle data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_middle) + 
    scale(AIns_middle) + scale(MPFC_middle) + Type:scale(NAcc_middle) + 
    Type:scale(AIns_middle) + Type:scale(MPFC_middle), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.34877 -0.46630  0.05791  0.35276  1.35943 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   17.54254    0.26717  65.661   <2e-16 ***
Typecomedy                    -0.22617    0.36944  -0.612   0.5467    
scale(NAcc_middle)            -0.23600    0.30363  -0.777   0.4453    
scale(AIns_middle)            -0.02164    0.26157  -0.083   0.9348    
scale(MPFC_middle)            -0.32698    0.23354  -1.400   0.1754    
Typecomedy:scale(NAcc_middle) -0.24320    0.37827  -0.643   0.5269    
Typecomedy:scale(AIns_middle)  0.76464    0.41771   1.831   0.0807 .  
Typecomedy:scale(MPFC_middle)  0.61956    0.34308   1.806   0.0846 .  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.7989 on 22 degrees of freedom
Multiple R-squared:  0.3893,    Adjusted R-squared:  0.195 
F-statistic: 2.003 on 7 and 22 DF,  p-value: 0.1008

           R2m       R2c
[1,] 0.3259475 0.3259475
[1] 80.35859

M11: Neural middle data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_middle) + 
    scale(AIns_middle) + scale(MPFC_middle) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_middle) + Type:scale(AIns_middle) + Type:scale(MPFC_middle), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.56344 -0.22727 -0.01317  0.23050  0.83789 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.76646    0.41163  40.732  < 2e-16 ***
Typecomedy                           -0.12802    0.63884  -0.200 0.843697    
scale(Theaters_US_M1)                 1.19746    0.29167   4.106 0.000827 ***
scale(Pos_arousal_scaled)            -0.38338    0.27752  -1.381 0.186132    
scale(Neg_arousal_scaled)            -0.01356    0.28656  -0.047 0.962832    
scale(NAcc_middle)                    0.20506    0.22071   0.929 0.366648    
scale(AIns_middle)                    0.10961    0.15521   0.706 0.490226    
scale(MPFC_middle)                    0.12013    0.16695   0.720 0.482197    
Typecomedy:scale(Theaters_US_M1)     -0.60179    0.31897  -1.887 0.077485 .  
Typecomedy:scale(Pos_arousal_scaled)  0.46453    0.32517   1.429 0.172355    
Typecomedy:scale(Neg_arousal_scaled) -0.63757    0.70604  -0.903 0.379907    
Typecomedy:scale(NAcc_middle)        -0.32543    0.26528  -1.227 0.237669    
Typecomedy:scale(AIns_middle)         0.10602    0.32074   0.331 0.745287    
Typecomedy:scale(MPFC_middle)        -0.02328    0.23194  -0.100 0.921293    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4579 on 16 degrees of freedom
Multiple R-squared:  0.8541,    Adjusted R-squared:  0.7356 
F-statistic: 7.205 on 13 and 16 DF,  p-value: 0.0001909

           R2m       R2c
[1,] 0.7635821 0.7635821
[1] 49.40732

M12: Neural offset data alone


Call:
lm(formula = log(Gross_US_M1) ~ Type + +scale(NAcc_offset) + 
    scale(AIns_offset) + scale(MPFC_offset) + Type:scale(NAcc_offset) + 
    Type:scale(AIns_offset) + Type:scale(MPFC_offset), data = AllSubs_NeuralActivation %>% 
    mutate(Type = factor(Type, levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-1.68479 -0.52415 -0.00219  0.37082  1.68291 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   17.38774    0.25875  67.199   <2e-16 ***
Typecomedy                    -0.46246    0.36823  -1.256    0.222    
scale(NAcc_offset)            -0.25394    0.26854  -0.946    0.355    
scale(AIns_offset)             0.14645    0.24484   0.598    0.556    
scale(MPFC_offset)             0.29161    0.36812   0.792    0.437    
Typecomedy:scale(NAcc_offset)  0.08375    0.42881   0.195    0.847    
Typecomedy:scale(AIns_offset) -0.35390    0.45922  -0.771    0.449    
Typecomedy:scale(MPFC_offset) -0.52509    0.43920  -1.196    0.245    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.8935 on 22 degrees of freedom
Multiple R-squared:  0.236, Adjusted R-squared:  -0.007119 
F-statistic: 0.9707 on 7 and 22 DF,  p-value: 0.4762

           R2m       R2c
[1,] 0.1898313 0.1898313
[1] 87.07755

M13: Neural offset data + affective data + behavioral data


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_offset) + 
    scale(AIns_offset) + scale(MPFC_offset) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_offset) + Type:scale(AIns_offset) + Type:scale(MPFC_offset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.70359 -0.25579 -0.00128  0.23431  0.90958 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          16.99216    0.48505  35.031  < 2e-16 ***
Typecomedy                           -0.33549    0.69805  -0.481  0.63729    
scale(Theaters_US_M1)                 1.03416    0.34782   2.973  0.00897 ** 
scale(Pos_arousal_scaled)            -0.27465    0.37154  -0.739  0.47048    
scale(Neg_arousal_scaled)            -0.05170    0.48217  -0.107  0.91594    
scale(NAcc_offset)                   -0.02308    0.15177  -0.152  0.88103    
scale(AIns_offset)                    0.15293    0.16318   0.937  0.36259    
scale(MPFC_offset)                   -0.13002    0.37376  -0.348  0.73247    
Typecomedy:scale(Theaters_US_M1)     -0.34235    0.36972  -0.926  0.36821    
Typecomedy:scale(Pos_arousal_scaled)  0.40135    0.40090   1.001  0.33166    
Typecomedy:scale(Neg_arousal_scaled) -0.53165    0.75770  -0.702  0.49297    
Typecomedy:scale(NAcc_offset)         0.01871    0.23753   0.079  0.93819    
Typecomedy:scale(AIns_offset)         0.01262    0.27181   0.046  0.96354    
Typecomedy:scale(MPFC_offset)         0.10923    0.39725   0.275  0.78687    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4701 on 16 degrees of freedom
Multiple R-squared:  0.8462,    Adjusted R-squared:  0.7213 
F-statistic: 6.772 on 13 and 16 DF,  p-value: 0.0002785

           R2m       R2c
[1,] 0.7522186 0.7522186
[1] 50.98713

M14: Sequence Model


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(NAcc_onset) + scale(AIns_middle) + scale(MPFC_offset) + 
    Type:scale(NAcc_onset) + Type:scale(AIns_middle) + Type:scale(MPFC_offset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.51548 -0.28740 -0.01475  0.22436  0.71228 

Coefficients:
                              Estimate Std. Error t value Pr(>|t|)    
(Intercept)                   17.14747    0.13408 127.894  < 2e-16 ***
Typecomedy                     0.08844    0.18304   0.483  0.63398    
scale(Theaters_US_M1)          0.75017    0.09635   7.786 1.27e-07 ***
scale(NAcc_onset)             -0.45970    0.15936  -2.885  0.00887 ** 
scale(AIns_middle)             0.27372    0.13328   2.054  0.05267 .  
scale(MPFC_offset)             0.16114    0.18491   0.871  0.39336    
Typecomedy:scale(NAcc_onset)   0.57168    0.19161   2.984  0.00708 ** 
Typecomedy:scale(AIns_middle) -0.20753    0.20318  -1.021  0.31867    
Typecomedy:scale(MPFC_offset) -0.11575    0.21721  -0.533  0.59970    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.4037 on 21 degrees of freedom
Multiple R-squared:  0.8511,    Adjusted R-squared:  0.7944 
F-statistic: 15.01 on 8 and 21 DF,  p-value: 4.313e-07

           R2m       R2c
[1,] 0.8054243 0.8054243
[1] 40.01623

M15: Sequence Model 2


Call:
lm(formula = log(Gross_US_M1) ~ Type + scale(Theaters_US_M1) + 
    scale(Pos_arousal_scaled) + scale(Neg_arousal_scaled) + scale(NAcc_onset) + 
    scale(AIns_middle) + scale(MPFC_offset) + Type:scale(Theaters_US_M1) + 
    Type:scale(Pos_arousal_scaled) + Type:scale(Neg_arousal_scaled) + 
    Type:scale(NAcc_onset) + Type:scale(AIns_middle) + Type:scale(MPFC_offset), 
    data = AllSubs_NeuralActivation %>% mutate(Type = factor(Type, 
        levels = c("horror", "comedy"))))

Residuals:
     Min       1Q   Median       3Q      Max 
-0.63173 -0.19482  0.00327  0.24375  0.48963 

Coefficients:
                                     Estimate Std. Error t value Pr(>|t|)    
(Intercept)                          17.13406    0.37404  45.808   <2e-16 ***
Typecomedy                           -0.45999    0.61553  -0.747   0.4657    
scale(Theaters_US_M1)                 0.77611    0.29808   2.604   0.0192 *  
scale(Pos_arousal_scaled)            -0.40196    0.31210  -1.288   0.2161    
scale(Neg_arousal_scaled)            -0.30346    0.38099  -0.796   0.4374    
scale(NAcc_onset)                    -0.48664    0.17457  -2.788   0.0132 *  
scale(AIns_middle)                    0.27343    0.13904   1.967   0.0668 .  
scale(MPFC_offset)                    0.39167    0.36012   1.088   0.2929    
Typecomedy:scale(Theaters_US_M1)     -0.18290    0.32165  -0.569   0.5775    
Typecomedy:scale(Pos_arousal_scaled)  0.39576    0.35109   1.127   0.2763    
Typecomedy:scale(Neg_arousal_scaled) -0.41113    0.72084  -0.570   0.5764    
Typecomedy:scale(NAcc_onset)          0.55595    0.21261   2.615   0.0188 *  
Typecomedy:scale(AIns_middle)        -0.04367    0.25202  -0.173   0.8646    
Typecomedy:scale(MPFC_offset)        -0.44611    0.37969  -1.175   0.2572    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 0.3894 on 16 degrees of freedom
Multiple R-squared:  0.8945,    Adjusted R-squared:  0.8087 
F-statistic: 10.43 on 13 and 16 DF,  p-value: 1.783e-05

           R2m       R2c
[1,] 0.8238359 0.8238359
[1] 39.68882

LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgojIExvYWQgbGlicmFyaWVzCmBgYHtyfQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KHJtZGZvcm1hdHMpCmxpYnJhcnkoZ2dwbG90MikKbGlicmFyeShnZ3B1YnIpCmxpYnJhcnkoR0dhbGx5KQpsaWJyYXJ5KGNhcikKYGBgCgoKYGBge3IsIHdhcm5pbmcgPSBGQUxTRSwgbWVzc2FnZSA9IEZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsbWU0KQpsaWJyYXJ5KGxtZXJUZXN0KQpsaWJyYXJ5KCJNdU1JbiIpCmxpYnJhcnkobG10ZXN0KQpsaWJyYXJ5KGJvb3QpCmBgYAoKIyBSZWFkIGRhdGFzZXRzCmBgYHtyfQpBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gPC0gcmVhZC5jc3YoJy9Vc2Vycy9sdWlzYWx2YXJlei9Eb2N1bWVudHMvR2l0SHViL1JNX1RoZXNpc19OZXVyb2ZvcmVjYXN0aW5nL1Byb2Nlc3NlZERhdGEvQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0FnZ3JlZ2F0ZV9Db21iaW5lZF9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0NvbWVkeV9jbGVhbi5jc3YnKQoKQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciA8LSByZWFkLmNzdignL1VzZXJzL2x1aXNhbHZhcmV6L0RvY3VtZW50cy9HaXRIdWIvUk1fVGhlc2lzX05ldXJvZm9yZWNhc3RpbmcvUHJvY2Vzc2VkRGF0YS9BbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQWdncmVnYXRlX0NvbWJpbmVkX0hvcnJvcl9jbGVhbi5jc3YnKQoKYGBgCgoKIyBDcmVhdGUgZGF0YSBmcmFtZXMgZm9yIGVhY2ggbW9kZWwuCmBgYHtyfQojIERlZmluZSBhZ2dyZWdhdGUgdmFyaWFibGVzLiAKQWxsX0dyb3NzX00xX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJEdyb3NzX1VTX00xKQpBbGxfVGhlYXRlcnNfTTEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFRoZWF0ZXJzX1VTX00xCgpDb21lZHlfR3Jvc3NfTTFfbG9nIDwtIGxvZyhBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JEdyb3NzX1VTX00xKQpDb21lZHlfVGhlYXRlcnNfTTEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRUaGVhdGVyc19VU19NMQoKSG9ycm9yX0dyb3NzX00xX2xvZyA8LSBsb2coQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRHcm9zc19VU19NMSkKSG9ycm9yX1RoZWF0ZXJzX00xIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkVGhlYXRlcnNfVVNfTTEKICAKTTFfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfVGhlYXRlcnNfTTEpIApNMV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1RoZWF0ZXJzX00xKSAKTTFfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19NMV9sb2csIEhvcnJvcl9UaGVhdGVyc19NMSkgCgojIERlZmluZSBhZmZlY3QgdmFyaWFibGVzLgpBbGxfUEEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJFBvc19hcm91c2FsX3NjYWxlZApBbGxfTkEgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5lZ19hcm91c2FsX3NjYWxlZAoKQ29tZWR5X1BBIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkUG9zX2Fyb3VzYWxfc2NhbGVkCkNvbWVkeV9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5lZ19hcm91c2FsX3NjYWxlZAoKSG9ycm9yX1BBIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkUG9zX2Fyb3VzYWxfc2NhbGVkCkhvcnJvcl9OQSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5lZ19hcm91c2FsX3NjYWxlZAoKTTJfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfUEEsIEFsbF9OQSkgCk0yX0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfTTFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSkgCk0yX0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfTTFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSkgCmBgYAoKYGBge3J9CiMgRGVmaW5lIElTQyB2YXJpYWJsZXMuIApBbGxfTkFjY19JU0MgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE5BY2NfSVNDCkFsbF9BSW5zX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kQUluc19JU0MKQWxsX01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX0lTQwoKQ29tZWR5X05BY2NfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTkFjY19JU0MKQ29tZWR5X0FJbnNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkQUluc19JU0MKQ29tZWR5X01QRkNfSVNDIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ19JU0MKCkhvcnJvcl9OQWNjX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE5BY2NfSVNDCkhvcnJvcl9BSW5zX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJEFJbnNfSVNDCkhvcnJvcl9NUEZDX0lTQyA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfSVNDCgojIERlZmluZSBtb2RlbHMuIApNNF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX0lTQywgQWxsX0FJbnNfSVNDLCBBbGxfTVBGQ19JU0MpIApNNF9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2NfSVNDLCBDb21lZHlfQUluc19JU0MsIENvbWVkeV9NUEZDX0lTQykgCk00X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfTkFjY19JU0MsIEhvcnJvcl9BSW5zX0lTQywgSG9ycm9yX01QRkNfSVNDKSAKCk01X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX0lTQywgQWxsX0FJbnNfSVNDLCBBbGxfTVBGQ19JU0MpIApNNV9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX0lTQywgQ29tZWR5X0FJbnNfSVNDLCBDb21lZHlfTVBGQ19JU0MpIApNNV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX0lTQywgSG9ycm9yX0FJbnNfSVNDLCBIb3Jyb3JfTVBGQ19JU0MpIApgYGAKCmBgYHtyfQojIERlZmluZSB3aG9sZSB2YXJpYWJsZXMuIApBbGxfTkFjY193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY193aG9sZQpBbGxfQUluc193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kQUluc193aG9sZQpBbGxfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTVBGQ193aG9sZQoKQ29tZWR5X05BY2Nfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX3dob2xlCkNvbWVkeV9BSW5zX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkQUluc193aG9sZQpDb21lZHlfTVBGQ193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE1QRkNfd2hvbGUKCkhvcnJvcl9OQWNjX3dob2xlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY193aG9sZQpIb3Jyb3JfQUluc193aG9sZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJEFJbnNfd2hvbGUKSG9ycm9yX01QRkNfd2hvbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciRNUEZDX3dob2xlCgojIERlZmluZSBtb2RlbHMuIApNNl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX3dob2xlLCBBbGxfQUluc193aG9sZSwgQWxsX01QRkNfd2hvbGUpIApNNl9DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X05BY2Nfd2hvbGUsIENvbWVkeV9BSW5zX3dob2xlLCBDb21lZHlfTVBGQ193aG9sZSkgCk02X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfTkFjY193aG9sZSwgSG9ycm9yX0FJbnNfd2hvbGUsIEhvcnJvcl9NUEZDX3dob2xlKSAKCk03X2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX3dob2xlLCBBbGxfQUluc193aG9sZSwgQWxsX01QRkNfd2hvbGUpIApNN19DX2RmIDwtIGRhdGEuZnJhbWUoQ29tZWR5X0dyb3NzX00xX2xvZywgQ29tZWR5X1BBLCBDb21lZHlfTkEsIENvbWVkeV9OQWNjX3dob2xlLAogICAgICAgICAgICAgICAgICAgICAgQ29tZWR5X0FJbnNfd2hvbGUsIENvbWVkeV9NUEZDX3dob2xlKSAKTTdfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9Hcm9zc19NMV9sb2csIEhvcnJvcl9QQSwgSG9ycm9yX05BLCBIb3Jyb3JfTkFjY193aG9sZSwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX3dob2xlLCBIb3Jyb3JfTVBGQ193aG9sZSkgCmBgYAoKYGBge3J9CiMgRGVmaW5lIG9uc2V0IHZhcmlhYmxlcy4gCkFsbF9OQWNjX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiROQWNjX29uc2V0CkFsbF9BSW5zX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX29uc2V0CkFsbF9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRNUEZDX29uc2V0CgpDb21lZHlfTkFjY19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fQ29tZWR5JE5BY2Nfb25zZXQKQ29tZWR5X0FJbnNfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX29uc2V0CkNvbWVkeV9NUEZDX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Db21lZHkkTVBGQ19vbnNldAoKSG9ycm9yX05BY2Nfb25zZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0hvcnJvciROQWNjX29uc2V0CkhvcnJvcl9BSW5zX29uc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19vbnNldApIb3Jyb3JfTVBGQ19vbnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb25fSG9ycm9yJE1QRkNfb25zZXQKCiMgRGVmaW5lIG1vZGVscy4gCk04X2RmIDwtIGRhdGEuZnJhbWUoQWxsX05BY2Nfb25zZXQsIEFsbF9BSW5zX29uc2V0LCBBbGxfTVBGQ19vbnNldCkgCk04X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfTkFjY19vbnNldCwgQ29tZWR5X0FJbnNfb25zZXQsIENvbWVkeV9NUEZDX29uc2V0KSAKTThfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX29uc2V0LCBIb3Jyb3JfQUluc19vbnNldCwgSG9ycm9yX01QRkNfb25zZXQpIAoKTTlfZGYgPC0gZGF0YS5mcmFtZShBbGxfR3Jvc3NfTTFfbG9nLCBBbGxfUEEsIEFsbF9OQSwgQWxsX05BY2Nfb25zZXQsIEFsbF9BSW5zX29uc2V0LCBBbGxfTVBGQ19vbnNldCkgCk05X0NfZGYgPC0gZGF0YS5mcmFtZShDb21lZHlfR3Jvc3NfTTFfbG9nLCBDb21lZHlfUEEsIENvbWVkeV9OQSwgQ29tZWR5X05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19vbnNldCwgQ29tZWR5X01QRkNfb25zZXQpIApNOV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX29uc2V0LAogICAgICAgICAgICAgICAgICAgICAgSG9ycm9yX0FJbnNfb25zZXQsIEhvcnJvcl9NUEZDX29uc2V0KSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgbWlkZGxlIHZhcmlhYmxlcy4gCkFsbF9OQWNjX21pZGRsZSA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19taWRkbGUKQWxsX0FJbnNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX21pZGRsZQpBbGxfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfbWlkZGxlCgpDb21lZHlfTkFjY19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX21pZGRsZQpDb21lZHlfQUluc19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX21pZGRsZQpDb21lZHlfTVBGQ19taWRkbGUgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX21pZGRsZQoKSG9ycm9yX05BY2NfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19taWRkbGUKSG9ycm9yX0FJbnNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19taWRkbGUKSG9ycm9yX01QRkNfbWlkZGxlIDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19taWRkbGUKCiMgRGVmaW5lIG1vZGVscy4gCk0xMF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX21pZGRsZSwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19taWRkbGUpIApNMTBfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX21pZGRsZSwgQ29tZWR5X0FJbnNfbWlkZGxlLCBDb21lZHlfTVBGQ19taWRkbGUpIApNMTBfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX21pZGRsZSwgSG9ycm9yX0FJbnNfbWlkZGxlLCBIb3Jyb3JfTVBGQ19taWRkbGUpIAoKTTExX2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX21pZGRsZSwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19taWRkbGUpIApNMTFfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19taWRkbGUsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19taWRkbGUsIENvbWVkeV9NUEZDX21pZGRsZSkgCk0xMV9IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX21pZGRsZSwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX21pZGRsZSwgSG9ycm9yX01QRkNfbWlkZGxlKSAKYGBgCgpgYGB7cn0KIyBEZWZpbmUgb2Zmc2V0IHZhcmlhYmxlcy4gCkFsbF9OQWNjX29mZnNldCA8LSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24kTkFjY19vZmZzZXQKQWxsX0FJbnNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiRBSW5zX29mZnNldApBbGxfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uJE1QRkNfb2Zmc2V0CgpDb21lZHlfTkFjY19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSROQWNjX29mZnNldApDb21lZHlfQUluc19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRBSW5zX29mZnNldApDb21lZHlfTVBGQ19vZmZzZXQgPC0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uX0NvbWVkeSRNUEZDX29mZnNldAoKSG9ycm9yX05BY2Nfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTkFjY19vZmZzZXQKSG9ycm9yX0FJbnNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkQUluc19vZmZzZXQKSG9ycm9yX01QRkNfb2Zmc2V0IDwtIEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbl9Ib3Jyb3IkTVBGQ19vZmZzZXQKCiMgRGVmaW5lIG1vZGVscy4gCk0xMl9kZiA8LSBkYXRhLmZyYW1lKEFsbF9OQWNjX29mZnNldCwgQWxsX0FJbnNfb2Zmc2V0LCBBbGxfTVBGQ19vZmZzZXQpIApNMTJfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9OQWNjX29mZnNldCwgQ29tZWR5X0FJbnNfb2Zmc2V0LCBDb21lZHlfTVBGQ19vZmZzZXQpIApNMTJfSF9kZiA8LSBkYXRhLmZyYW1lKEhvcnJvcl9OQWNjX29mZnNldCwgSG9ycm9yX0FJbnNfb2Zmc2V0LCBIb3Jyb3JfTVBGQ19vZmZzZXQpIAoKTTEzX2RmIDwtIGRhdGEuZnJhbWUoQWxsX0dyb3NzX00xX2xvZywgQWxsX1BBLCBBbGxfTkEsIEFsbF9OQWNjX29mZnNldCwgQWxsX0FJbnNfb2Zmc2V0LCBBbGxfTVBGQ19vZmZzZXQpIApNMTNfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICBDb21lZHlfQUluc19vZmZzZXQsIENvbWVkeV9NUEZDX29mZnNldCkgCk0xM19IX2RmIDwtIGRhdGEuZnJhbWUoSG9ycm9yX0dyb3NzX00xX2xvZywgSG9ycm9yX1BBLCBIb3Jyb3JfTkEsIEhvcnJvcl9OQWNjX29mZnNldCwKICAgICAgICAgICAgICAgICAgICAgIEhvcnJvcl9BSW5zX29mZnNldCwgSG9ycm9yX01QRkNfb2Zmc2V0KSAKYGBgCgpgYGB7cn0KCk0xNF9kZiA8LSBkYXRhLmZyYW1lKEFsbF9Hcm9zc19NMV9sb2csIEFsbF9QQSwgQWxsX05BLCBBbGxfTkFjY19vbnNldCwgQWxsX0FJbnNfbWlkZGxlLCBBbGxfTVBGQ19vZmZzZXQpIApNMTRfQ19kZiA8LSBkYXRhLmZyYW1lKENvbWVkeV9Hcm9zc19NMV9sb2csIENvbWVkeV9QQSwgQ29tZWR5X05BLCBDb21lZHlfTkFjY19vbnNldCwKICAgICAgICAgICAgICAgICAgICAgIENvbWVkeV9BSW5zX21pZGRsZSwgQ29tZWR5X01QRkNfb2Zmc2V0KSAKTTE0X0hfZGYgPC0gZGF0YS5mcmFtZShIb3Jyb3JfR3Jvc3NfTTFfbG9nLCBIb3Jyb3JfUEEsIEhvcnJvcl9OQSwgSG9ycm9yX05BY2Nfb25zZXQsCiAgICAgICAgICAgICAgICAgICAgICBIb3Jyb3JfQUluc19taWRkbGUsIEhvcnJvcl9NUEZDX29mZnNldCkgCmBgYAoKIyBOb3RlczogCiAtIEhhdmUgbm90ZSByZW1vdmVkIG91dGxpZXJzIGZyb20gZGF0YS4KCiMgTmV1cm9mb3JlY2FzdGluZzogRmlyc3QgTW9udGggVVMuCiMjIE0xOiBBZ2dyZWdzdGUgZGF0YSAKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTEgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgKwogICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xKQpyLnNxdWFyZWRHTE1NKE0xKQpBSUMoTTEpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMV9kZikKZ2dwYWlycyhNMV9DX2RmKQpnZ3BhaXJzKE0xX0hfZGYpCmBgYAoKCgojIyBNMjogQWZmZWN0aXZlIGRhdGEgYWxvbmUKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTIgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTIpCnIuc3F1YXJlZEdMTU0oTTIpCkFJQyhNMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0yX2RmKQpnZ3BhaXJzKE0yX0NfZGYpCmdncGFpcnMoTTJfSF9kZikKYGBgCgojIyBNMzogQWdncmVnYXRlIGFuZCBhZmZlY3RpdmUgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNMyA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSAKICAgICAgICAgIysgc2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgKyBzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICMrIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTMpCnIuc3F1YXJlZEdMTU0oTTMpCkFJQyhNMykKYGBgCgojIE00OiBJU0MgZGF0YSBhbG9uZQpgYGB7ciwgZWNobyA9IEZBTFNFfQpNNCA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19JU0MpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfSVNDKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTQpCnIuc3F1YXJlZEdMTU0oTTQpCkFJQyhNNCkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE00X2RmKQpnZ3BhaXJzKE00X0NfZGYpCmdncGFpcnMoTTRfSF9kZikKYGBgCgojIE01OiBJU0MgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck01IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkgCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfSVNDKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19JU0MpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgIysgVHlwZTpzY2FsZShXX3Njb3JlX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX0lTQykgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19JU0MpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfSVNDKQogICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNSkKci5zcXVhcmVkR0xNTShNNSkKQUlDKE01KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTVfZGYpCmdncGFpcnMoTTVfQ19kZikKZ2dwYWlycyhNNV9IX2RmKQpgYGAKCiMgTTY6IE5ldXJhbCB3aG9sZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck02IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgIysgVGhlYXRlcnNfVVNfVzFfbnVtIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY193aG9sZSkgCiAgICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICArIHNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc193aG9sZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE1QRkNfd2hvbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTYpCnIuc3F1YXJlZEdMTU0oTTYpCkFJQyhNNikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE02X2RmKQpnZ3BhaXJzKE02X0NfZGYpCmdncGFpcnMoTTZfSF9kZikKYGBgCgojIE03OiBOZXVyYWwgd2hvbGUgZGF0YSArIGFmZmVjdGl2ZSBkYXRhICsgYmVoYXZpb3JhbCBkYXRhCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck03IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfd2hvbGUpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ193aG9sZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX3dob2xlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX3dob2xlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX3dob2xlKQogICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNNykKci5zcXVhcmVkR0xNTShNNykKQUlDKE03KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTTdfZGYpCmdncGFpcnMoTTdfQ19kZikKZ2dwYWlycyhNN19IX2RmKQpgYGAKCiMgTTg6IE5ldXJhbCBvbnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck04IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlICsgCiAgICAgICAgICAgICAgKyBzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb25zZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICAgLCBkYXRhID0gQWxsU3Vic19OZXVyYWxBY3RpdmF0aW9uICU+JSBtdXRhdGUoVHlwZSA9IGZhY3RvcihUeXBlLCBsZXZlbHMgPSBjKCJob3Jyb3IiLCAiY29tZWR5IikpKSkKc3VtbWFyeShNOCkKci5zcXVhcmVkR0xNTShNOCkKQUlDKE04KQoKIyBDcmVhdGUgcGFpcnMgcGxvdC4gCmdncGFpcnMoTThfZGYpCmdncGFpcnMoTThfQ19kZikKZ2dwYWlycyhNOF9IX2RmKQpgYGAKCiMgTTk6IE5ldXJhbCBvbnNldCBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTkgPC0gbG0obG9nKEdyb3NzX1VTX00xKSB+IFR5cGUgCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgIysgVG90YWxfd2Vla3MgCiAgICAgICAgICAgICAjKyBXZWVrc19hdmdfcGVyX3RoZWF0ZXIKICAgICAgICAgICAgICsgc2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKSAKICAgICAgICAgICAgICsgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoV19zY29yZV9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoQUluc19vbnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vbnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTkpCnIuc3F1YXJlZEdMTU0oTTkpCkFJQyhNOSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE05X2RmKQpnZ3BhaXJzKE05X0NfZGYpCmdncGFpcnMoTTlfSF9kZikKYGBgCgojIE0xMDogTmV1cmFsIG1pZGRsZSBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMCA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX21pZGRsZSkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEwKQpyLnNxdWFyZWRHTE1NKE0xMCkKQUlDKE0xMCkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMF9kZikKZ2dwYWlycyhNMTBfQ19kZikKZ2dwYWlycyhNMTBfSF9kZikKYGBgCgojIE0xMTogTmV1cmFsIG1pZGRsZSBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTExIDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX21pZGRsZSkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19taWRkbGUpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX21pZGRsZSkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTExKQpyLnNxdWFyZWRHTE1NKE0xMSkKQUlDKE0xMSkKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMV9kZikKZ2dwYWlycyhNMTFfQ19kZikKZ2dwYWlycyhNMTFfSF9kZikKYGBgCgojIE0xMjogTmV1cmFsIG9mZnNldCBkYXRhIGFsb25lCmBgYHtyLCBlY2hvID0gRkFMU0V9Ck0xMiA8LSBsbShsb2coR3Jvc3NfVVNfTTEpIH4gVHlwZSArIAogICAgICAgICAgICAgICsgc2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoQUluc19vZmZzZXQpIAogICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX29mZnNldCkgCiAgICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEyKQpyLnNxdWFyZWRHTE1NKE0xMikKQUlDKE0xMikKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xMl9kZikKZ2dwYWlycyhNMTJfQ19kZikKZ2dwYWlycyhNMTJfSF9kZikKYGBgCgojIE0xMzogTmV1cmFsIG9mZnNldCBkYXRhICsgYWZmZWN0aXZlIGRhdGEgKyBiZWhhdmlvcmFsIGRhdGEKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTEzIDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgIysgc2NhbGUoV19zY29yZV9zY2FsZWQpIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX29mZnNldCkgCiAgICAgICAgICAgICArIHNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoTVBGQ19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOZWdfYXJvdXNhbF9zY2FsZWQpCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTkFjY19vZmZzZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfb2Zmc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTEzKQpyLnNxdWFyZWRHTE1NKE0xMykKQUlDKE0xMykKCiMgQ3JlYXRlIHBhaXJzIHBsb3QuIApnZ3BhaXJzKE0xM19kZikKZ2dwYWlycyhNMTNfQ19kZikKZ2dwYWlycyhNMTNfSF9kZikKYGBgCgojIE0xNDogU2VxdWVuY2UgTW9kZWwKYGBge3IsIGVjaG8gPSBGQUxTRX0KTTE0IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlIAogICAgICAgICAgICAgKyBzY2FsZShUaGVhdGVyc19VU19NMSkKICAgICAgICAgICAgICMrIFRvdGFsX3dlZWtzIAogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICAjKyBzY2FsZShQb3NfYXJvdXNhbF9zY2FsZWQpIAogICAgICAgICAgICAgIysgc2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKSAgCiAgICAgICAgICAgICAjKyBzY2FsZShXX3Njb3JlX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICArIHNjYWxlKE1QRkNfb2Zmc2V0KSAKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpCiAgICAgICAgICAgICAjKyBUeXBlOnNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICMrIFR5cGU6c2NhbGUoTmVnX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5BY2Nfb25zZXQpIAogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKEFJbnNfbWlkZGxlKSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShNUEZDX29mZnNldCkKICAgICAgICAgICAgICwgZGF0YSA9IEFsbFN1YnNfTmV1cmFsQWN0aXZhdGlvbiAlPiUgbXV0YXRlKFR5cGUgPSBmYWN0b3IoVHlwZSwgbGV2ZWxzID0gYygiaG9ycm9yIiwgImNvbWVkeSIpKSkpCnN1bW1hcnkoTTE0KQpyLnNxdWFyZWRHTE1NKE0xNCkKQUlDKE0xNCkKYGBgCgojIE0xNTogU2VxdWVuY2UgTW9kZWwgMgpgYGB7ciwgZWNobyA9IEZBTFNFfQogIyBFZmZlY3RzIGJlY29tZSBtb3JlIHNpZ25pZmljYW50IGlmIHdlIHJlbW92ZSAnVGhlYXRlcl9udW0nIHByZWRpY3Rvci4uLiB3ZSBjYW4gZG8gdGhhdCB3aXRoIHRoZSAKIyAnR3Jvc3NPdmVyVGhlYXRlcnMnIHZhcmlhYmxlLCBob3dldmVyIE1QRkMgbG9va3MgYSBiaXQgZnVubnkuICAKTTE1IDwtIGxtKGxvZyhHcm9zc19VU19NMSkgfiBUeXBlCiAgICAgICAgICAgICArIHNjYWxlKFRoZWF0ZXJzX1VTX00xKQogICAgICAgICAgICAgIysgV2Vla3NfYXZnX3Blcl90aGVhdGVyCiAgICAgICAgICAgICArIHNjYWxlKFBvc19hcm91c2FsX3NjYWxlZCkgCiAgICAgICAgICAgICArIHNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkgIAogICAgICAgICAgICAgKyBzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICsgc2NhbGUoQUluc19taWRkbGUpIAogICAgICAgICAgICAgKyBzY2FsZShNUEZDX29mZnNldCkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoVGhlYXRlcnNfVVNfTTEpICMgU2hvdWxkIHdlIGhhdmUgYSB0aGVhdGVycyBpbnRlcmFjdGlvbj8gCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoUG9zX2Fyb3VzYWxfc2NhbGVkKQogICAgICAgICAgICAgKyBUeXBlOnNjYWxlKE5lZ19hcm91c2FsX3NjYWxlZCkKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShOQWNjX29uc2V0KSAKICAgICAgICAgICAgICsgVHlwZTpzY2FsZShBSW5zX21pZGRsZSkgCiAgICAgICAgICAgICArIFR5cGU6c2NhbGUoTVBGQ19vZmZzZXQpCiAgICAgICAgICAgICAsIGRhdGEgPSBBbGxTdWJzX05ldXJhbEFjdGl2YXRpb24gJT4lIG11dGF0ZShUeXBlID0gZmFjdG9yKFR5cGUsIGxldmVscyA9IGMoImhvcnJvciIsICJjb21lZHkiKSkpKQpzdW1tYXJ5KE0xNSkKci5zcXVhcmVkR0xNTShNMTUpCkFJQyhNMTUpCgojIENyZWF0ZSBwYWlycyBwbG90LiAKZ2dwYWlycyhNMTRfZGYpCmdncGFpcnMoTTE0X0NfZGYpCmdncGFpcnMoTTE0X0hfZGYpCmBgYA==